Method for performing a disjunctive proof for two relations

ABSTRACT

The present disclosure relates to a method method for performing a disjunctive proof for two relations R 0  and R 1 . The relation R 0  is between an instance set X 0  and a witness set W 0  and defines a language L(R 0 ) containing those elements x 0 ∈X 0  for which there exists a witness w 0  that is related to x 0  in accordance with R 0 . The relation R 1  is between an instance set X 1  and a witness set W 1  and defining a language L(R 1 ) containing those elements x 1 ∈X 1  for which there exists a witness w 1  that is related to x 1  in accordance with R 1 . For proving knowledge of a witness w b  of at least one of instances x 0  and x 1 , where b is 0 or 1, of the respective relations R 0  and R 1 , the prover may generate using a bijective function a challenge from a simulated challenge c 1-b .

BACKGROUND

The present invention relates to the field of digital computer systems, and more specifically, to a method for performing a disjunctive proof for two relations.

Zero-knowledge proofs (ZKP) are cryptographic protocols that enable a prover to convince a verifier of the truth of a statement, without revealing anything more to the verifier than the mere truth of the statement. A zero-knowledge proof of knowledge (ZKPoK) enables the prover to prove that he knows some secret information, without leaking anything about that information. ZKPoKs are among the most widely used tools in cryptographic protocol design, with applications to basic primitives such as identification, digital signatures, and public-key encryption, as well as to more advanced constructions such as group signatures, anonymous credentials, electronic voting, and digital cash. However, there is a continuous need in improving existing and developing new protocols for proofs of knowledge.

SUMMARY

Various embodiments provide a method for performing a disjunctive proof for two relations, proving unit and computer program product as described by the subject matter of the independent claims. Advantageous embodiments are described in the dependent claims. Embodiments of the present invention can be freely combined with each other if they are not mutually exclusive.

In one aspect, the invention relates to a method for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w₀ that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness w_(b) of at least one of instances x_(b) and x_(1-b), where b is 0 or 1, of the respective relations R_(b) and R_(1-b) the method comprises:

-   -   providing a proving unit comprising a prover and a simulator,         wherein the proving unit has an indication of the witness w_(b)         of x_(b);     -   generating by the simulator, using the instance x_(1-b), a         transcript of a proof of knowledge of an eventual witness of         x_(1-b) comprising a simulated commitment, a simulated challenge         c_(1-b) from a challenge set C_(1-b), and a simulated response;     -   generating by the prover a real commitment as a first step in a         real proof of knowledge of a witness w_(b) to x_(b);     -   sending by the prover the real and simulated commitments to a         verifier;     -   in response to the sending of the commitments, receiving by the         prover from the verifier a bijective function π mapping elements         from challenge set C₀ to challenge set C₁;     -   computing by the prover a real challenge c_(b) so that         c_(b)=π^(2b-1)(c_(1-b)) (e.g. so that c₁=π(c₀));     -   creating by the prover a real proof of knowledge using as input         a witness w_(b) of x_(b) comprising the real commitment, the         real challenge c_(b), and a real response;     -   sending by the prover the real and simulated proofs of knowledge         to the verifier causing the verifier to accept the proofs.

In another aspect, the invention relates to a method for performing a disjunctive proof for two relations R0 and R1, the relation R0 being between an instance set X0 and a witness set W0 and defining a language L(R0) containing those elements x0∈X0 for which there exists a witness w0 that is related to x0 in accordance with R0, the relation R₁ being between an instance set X1 and a witness set W1 and defining a language L(R1) containing those elements x1∈X1 for which there exists a witness w1 that is related to x1 in accordance with R1, wherein for proving knowledge of a witness w_(b) of at least one of instances x0 and x1, where b is 0 or 1, of the respective relations R0 and R1, the method comprises:

-   -   providing a proving unit comprising a prover and a simulator,         wherein the proving unit has an indication of the witness w_(b)         of x_(b);     -   generating by the simulator, using the instance x_(1-b), a         transcript of a proof of knowledge of an eventual witness of         x_(1-b) comprising a simulated commitment, a simulated challenge         c_(1-b) from a challenge set C_(1-b), and a simulated response;     -   generating by the prover a real commitment as the first step in         a real proof of knowledge of a witness w_(b) to x_(b);     -   generating by the prover a hash value by applying a hash         function to an input comprising the true commitment and the real         commitment, and interpreting said hash value as the description         a bijective function π mapping elements from challenge set C₀ to         challenge set C₁;     -   computing by the prover a real challenge c_(b) so that         c_(b)=π^(2b-1)(c_(1-b));     -   creating by the prover a real proof of knowledge using as input         a witness w_(b) of x_(b) comprising the real commitment, the         real challenge c_(b), and a real response; and     -   sending by the prover the real and simulated proofs of knowledge         to the verifier causing the verifier to accept the proofs.

In another aspect, the invention relates to a computer program product comprising a computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code configured to implement steps of the method according to preceding embodiments.

In another aspect, the invention relates to a proving unit for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w₀ that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness of at least one of instances x_(b) and x_(1-b), b is 0 or 1, of the respective relations R_(b) and R_(1-b), the proving unit comprising a prover and a simulator, the proving unit having an indication of the witness of x_(b); wherein the simulator is configured for generating using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge from challenge set C_(1-b), and a simulated response; wherein the prover is configured for:

-   -   generating a real commitment in a proof of knowledge of a         witness w_(b) for the instance x_(b);     -   sending the real and simulated commitments to a verifier;     -   in response to the sending of the commitments, receiving from         the verifier a bijective function π mapping elements from         challenge set C₀ to challenge set C₁;     -   generating a real challenge c_(b) from challenge set C_(b) by         such that c_(b)=π^(2b-1)(c_(1-b));     -   creating a real proof of knowledge of the witness of x_(b) using         as inputs the instance x_(b) and the corresponding witness         w_(b), comprising of the real commitment, the real challenge         c_(b) and a real response; and     -   sending the real and simulated proofs of knowledge causing the         verifier to accept the proofs.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

In the following embodiments of the invention are explained in greater detail, by way of example only, making reference to the drawings in which:

FIG. 1 illustrates an example of a proof system.

FIG. 2 represents a proving unit, suited for implementing one or more method steps as involved in the present disclosure.

FIG. 3 is a flowchart of a method for performing a disjunctive proof for two relations.

FIG. 4 is a flowchart of another method for performing a disjunctive proof for two relations.

FIG. 5 is a diagram indicative of an example OR-proof protocol in accordance with the present disclosure.

FIG. 6 is a diagram of an example protocol to proof that a homomorphic commitment opens to either 0 or 1 in accordance with present disclosure.

FIG. 7 is a diagram of an example application of the present protocol on Schnorr Proofs.

DETAILED DESCRIPTION

The descriptions of the various embodiments of the present invention will be presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

The present method provides a construction of OR-proofs for protocols based on random permutations over the challenge space, rather than on secret sharing schemes. The present method may particularly be advantageous for challenges which are random elements from a set that does not form a group (e.g., vectors with small norm in a ring), and for which it is therefore not clear how one could use them as shares in a perfect secret-sharing scheme. For example, the present method may be used to further secure lattice-based cryptography.

The present method may for example be used in lattice-based electronic voting schemes for binary elections (e.g., where each voter proves his ballot contains a zero or one vote), designated-verifier signatures, multi-party computation, and electronic cash.

According to one embodiment, the challenge sets C₀ and C₁ are identical, and where the bijective function π is a permutation over C₀=C₁.

According to one embodiment, the challenge sets C₀ and C₁ are sets of integers, and where the bijective function π is a bijective function of the bit positions in a binary representation of elements of C₀.

According to one embodiment, the challenge sets C₀ and C₁ are sets of polynomials, and where the bijective function π is a permutation of the coefficients of the polynomials. This embodiment may particularly be advantageous for lattice based protocols.

According to one embodiment, the challenge sets C₀ and C₁ are a subset C of

[X]/X^(n)+1 for a predefined integer value n.

According to one embodiment, the proving of the knowledge of a witness of at least one of instances x_(b) and x_(1-b) is the proving of the following statement x₀∈L(R₀) OR x₁∈L(R₁).

According to one embodiment, the simulator is configured to generate for a given x_(k)∈L(R_(k)), where k=0 or 1, a transcript that is indistinguishable from a transcript that is generated by the prover from the given x_(k) and corresponding witness w_(k).

According to one embodiment, the relation R_(b) is defined such that a witness w_(b) is a homomorphic commitment of corresponding instance x_(b), wherein polynomials f of the challenge set are defined as follows {f∈

[X]/X^(n)+1|∥f∥_(∞)=1,∥f∥₁=60}, wherein the predefined bijective function π is a permutation that is selected from permutation set Π=Perm(n)×{0,1}⁶⁰, where n is an integer value. This may provide a secure two-party protocol for lattice-based cryptography.

According to one embodiment, the set X_(b) is a cyclic group

of prime order q with generator g and the set W_(b) is group

q, wherein witness w_(b) is related to corresponding instance x_(b) as follows: x_(b)=g^(w) ^(b) . This embodiment may enable an OR-proof construction to the Schnorr proof of discrete logarithms in accordance with the present method.

FIG. 1 illustrates an example of a proof system 10. As shown in FIG. 1, the proof system 10 includes a proving unit 100 and a verifier 180. The proving unit 100 and the verifier 180 are connected via a network, which may be a wired, a wireless network or a combination thereof. Each of proving unit and the verifier provides computing capabilities. For example, each of proving unit and the verifier provides the storage, networking, memory, and processing resources.

FIG. 2 represents the proving unit 100 as a general computerized system, suited for implementing method steps as involved in the disclosure.

It will be appreciated that the methods described herein are at least partly non-interactive, and automated by way of computerized systems, such as servers or embedded systems. In exemplary embodiments though, the methods described herein can be implemented in a (partly) interactive system. These methods can further be implemented in software 112, 122 (including firmware 122), hardware (processor) 105, or a combination thereof. In exemplary embodiments, the methods described herein are implemented in software, as an executable program, and is executed by a special or general-purpose digital computer, such as a personal computer, workstation, minicomputer, or mainframe computer. The most general system 100 therefore includes a general-purpose computer 101.

In exemplary embodiments, in terms of hardware architecture, as shown in FIG. 2, the computer 101 includes a processor 105, memory (main memory) 110 coupled to a memory controller 115, and one or more input and/or output (I/O) devices (or peripherals) 20, 145 that are communicatively coupled via a local input/output controller 135. The input/output controller 135 can be, but is not limited to, one or more buses or other wired or wireless connections, as is known in the art. The input/output controller 135 may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface may include address, control, and/or data connections to enable appropriate communications among the aforementioned components. As described herein the I/O devices 20, 145 may generally include any generalized cryptographic card or smart card known in the art.

The processor 105 is a hardware device for executing software, particularly that stored in memory 110. The processor 105 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the computer 101, a semiconductor based microprocessor (in the form of a microchip or chip set), a macroprocessor, or generally any device for executing software instructions.

The memory 110 can include any one or combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), programmable read only memory (PROM). Note that the memory 110 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 105.

The software in memory 110 may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions, notably functions involved in embodiments of this invention. In the example of FIG. 2, software in the memory 110 includes instructions 112 e.g. instructions to manage databases such as a database management system.

The software in memory 110 shall also typically include a suitable operating system (OS) 111. The OS 111 essentially controls the execution of other computer programs, such as possibly software 112 for implementing methods as described herein.

The methods described herein may be in the form of a source program 112, executable program 112 (object code), script, or any other entity comprising a set of instructions 112 to be performed. When a source program, then the program needs to be translated via a compiler, assembler, interpreter, or the like, which may or may not be included within the memory 110, so as to operate properly in connection with the OS 111. Furthermore, the methods can be written as an object oriented programming language, which has classes of data and methods, or a procedure programming language, which has routines, subroutines, and/or functions.

In exemplary embodiments, a conventional keyboard 150 and mouse 155 can be coupled to the input/output controller 135. Other output devices such as the I/O devices 145 may include input devices, for example but not limited to a printer, a scanner, microphone, and the like. Finally, the I/O devices 10, 145 may further include devices that communicate both inputs and outputs, for instance but not limited to, a network interface card (NIC) or modulator/demodulator (for accessing other files, devices, systems, or a network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, and the like. The I/O devices 10, 145 can be any generalized cryptographic card or smart card known in the art. The system 100 can further include a display controller 125 coupled to a display 130. In exemplary embodiments, the system 100 can further include a network interface for coupling to a network 165. The network 165 can be an IP-based network for communication between the computer 101 and any external server, client and the like via a broadband connection. The network 165 transmits and receives data between the computer 101 and external systems 30, which can be involved to perform part or all of the steps of the methods discussed herein. In exemplary embodiments, network 165 can be a managed IP network administered by a service provider. The network 165 may be implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc. The network 165 can also be a packet-switched network such as a local area network, wide area network, metropolitan area network, Internet network, or other similar type of network environment. The network 165 may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system and includes equipment for receiving and transmitting signals.

If the computer 101 is a PC, workstation, intelligent device or the like, the software in the memory 110 may further include a basic input output system (BIOS) 122. The BIOS is a set of essential software routines that initialize and test hardware at startup, start the OS 111, and support the transfer of data among the hardware devices. The BIOS is stored in ROM so that the BIOS can be executed when the computer 101 is activated.

When the computer 101 is in operation, the processor 105 is configured to execute software 112 stored within the memory 110, to communicate data to and from the memory 110, and to generally control operations of the computer 101 pursuant to the software. The methods described herein and the OS 111, in whole or in part, but typically the latter, are read by the processor 105, possibly buffered within the processor 105, and then executed.

When the systems and methods described herein are implemented in software 112, as is shown in FIG. 2, the methods can be stored on any computer readable medium, such as storage 120, for use by or in connection with any computer related system or method. The storage 120 may comprise a disk storage such as HDD storage.

The memory 110 may further comprise a prover 190 and a simulator 191. The simulator 191 and the prover 190 may be configured to generate a simulated transcript and real transcript respectively, wherein each transcript may be a tuple comprising at least a commitment, a challenge and a response. The elements of the simulated or real transcript may be generated or computed at different point of times. The simulated transcript is indistinguishable from transcripts of the prover. As long as an input is provided the generation of the transcripts from the input may be one of the known methods.

The proving unit 100 including the prover 190 (P) and the simulator 191 (Sim) and the verifier 180 (V) may be configured to perform a predefined two-party protocol S as follows. For example, S=(P,V) may be a two-party protocol, where V is probabilistic polynomial-time (PPT) algorithm, and

,

′ may be binary relations such that

⊂

′. S is called a Σ′-protocol for

,

′ with challenge set C, public input (or instance set) X and private input (or witness set) W, if and only if it satisfies the following conditions, referred to as “three-move form”, “completeness”, “Special soundness” and “Special honest-verifier zero-knowledge”.

Three-move form:

the prover P computes a commitment t and sends it to verifier V. The verifier V then draws a challenge c

C using the set of challenge C and sends it to prover P. The prover P sends a response s to the verifier V. Depending on the protocol transcript (t; c; s), the verifier V finally accepts or rejects the proof. The protocol transcript (t; c; s) is called accepting if the verifier accepts.

Completeness

Whenever (x, w)∈

, the verifier V accepts with probability at least 1−α.

Special Soundness

There exists a PPT algorithm E (a knowledge extractor) which takes as inputs two accepting transcripts (t, c′, s′), (t, c″, s″) satisfying c′≠c″, and outputs w′ such that (x, w′)∈

′.

Special Honest-Verifier Zero-Knowledge (SHVZK)

The simulator Sim is a PPT algorithm taking x∈L(

) and c∈C as inputs, and outputs Sim(x, c)=(t, s) so that the triple (t, c, s) is indistinguishable from an accepting protocol transcript generated by a real protocol run.

If S satisfies the above conditions, S may be called a Σ′-protocol for

⊂

′⊂X⊂W with challenge set C.

The operation of the proof system 10 is further described with reference to following figures.

FIG. 3 is a flowchart of a method for performing a disjunctive proof (or OR-proof) for two relations R₀ and R₁. The relation R₀ is a relation between an instance set X₀ and a witness set W₀. The relation R₀ defines a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w0 that is related to x₀ in accordance with the relation R₀. The relation R₁ is a relation between an instance set X₁ and a witness set W₁. The relation R₁ defines a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with the relation R₁. The method of FIG. 3 may enable an interactive zero-knowledge proof.

The method is for proving knowledge of a witness w_(b) of at least one of instances x_(b) and x_(1-b), where b is 0 or 1, of the respective relations R_(b) and R_(1-b). For example, a user e.g. the proving unit 100 may know only one witness of the two witnesses bit and does not want to reveal which one he or she knows while still convincing the verifier that he or she knows the witness.

Assuming, for example, that the proving unit 100 has an indication of (or knows) the witness w_(b) of x_(b), but may not have an indication of the whiteness w_(1-b) of x_(1-b). The proving unit 100 may prove to the verifier 180 the knowledge of the witness w_(b) as described with the method steps.

In step 301, the simulator 191 may generate using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b). The generation of the transcript may be performed using in addition a simulated challenge c_(1-b) from a challenge set C_(1-b). The simulated challenge c_(1-b) may be (e.g. randomly) selected from the challenge set C_(1-b) by the simulator 191. The transcript comprises a simulated commitment, the simulated challenge c_(1-b) from the challenge set C_(1-b), and a simulated response. The simulator 191 may be configured to generate proofs that look like real ones.

In step 303, the prover 190 may generate a real commitment as a first step in a real proof of knowledge of the witness w_(b) to x_(b). The generation of the real commitment may be performed in parallel or after the generation of the transcript by the simulator 191. Performing the two generations in parallel may save processing time. Performing the generation of the real commitment after the generation of the transcript by the simulator 191 may enable to save processing resources that would otherwise be required by an unnecessary generation of the real commitment if the generation of the transcript is failed.

In step 305, the prover 190 may send to the verifier an indication of the real and simulated commitments to the verifier 180 e.g. via the network connection. For example the prover 190 may send to the verifier the real and simulated commitments. In another example, the prover 190 may send a hash value that is generated out of the real and simulated commitments using a predefined hash function. For example, before performing the sending, the prover 190 may receive an indication from the simulator 191 that the transcript is generated and where the transcript is stored or in another example, the prover may receive from the simulator the transcript.

In response to the sending of the commitments, the prover 190 may receive, in step 307, from the verifier 180 a bijective function π mapping elements from challenge set C₀ to challenge set C₁. In one example, the proving unit 100 may comprise a set of functions and the verifier 180 may send an indication of the bijective function π such that the prover can identify and select the bijective function π from the set of functions.

The bijective function may depend on the type of the challenge sets C₀ and C₁. For example, in case the challenge sets C₀ and C₁ are identical, the bijective function π may be a permutation over C₀=C₁. In case the challenge sets C₀ and C₁ are sets of integers, the bijective function π may be a bijective function of the bit positions in a binary representation of elements of C₀. In case the challenge sets C₀ and C₁ are sets of polynomials, the bijective function π may be a permutation of the coefficients of the polynomials.

Using the received bijective function it, the prover 190 may compute in step 309 a real challenge c_(b) from the simulated challenge c_(1-b) so that c_(b)=π^(2b-1)(c_(1-b)), e.g. c₁=π(c₀) and c₀=π⁻¹(c₁).

In step 311, the prover 190 may create a real proof of knowledge using as input a witness w_(b) of x_(b). The real proof of knowledge comprises the real commitment, the real challenge c_(b), and a real response.

In step 313, the prover 190 may send the real and simulated proofs of knowledge to the verifier 180 causing the verifier to accept the proofs.

FIG. 4 is a flowchart of another method for proving knowledge of a witness w_(b) of at least one of instances x_(b) and x_(1-b), where b is 0 or 1, of the respective relations R_(b) and R_(1-b). The method of FIG. 4 may be a non-interactive zero-knowledge proof in that fewer communication steps between the prover and the verifier exist in comparison with the method of FIG. 3.

As with the method of FIG. 3, it may be assumed that the proving unit 100 has an indication of (or knows) the witness w_(b) of x_(b), but may not have an indication of the whiteness w_(1-b) of x_(1-b). The proving unit 100 may prove to the verifier 180 the knowledge of the witness w_(b) as described with the method steps.

Step 401 is similar to step 301, in which the simulator 191 generates, using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge c_(1-b) from the challenge set C_(1-b), and a simulated response.

Step 403 is similar to step 303, in which the prover 190 generates a real commitment as a first step in a real proof of knowledge of the witness w_(b) to x_(b).

In step 405, the prover 190 may generate a hash value by applying a hash function to an input comprising the real commitment and the simulated commitment, wherein the hash value is a description or an indication of bijective function m mapping elements from challenge set C₀ to challenge set C₁.

Using the bijective function m, the prover 190 may compute in step 407 a real challenge c_(b) so that c_(b)=π^(2b-1)(c_(1-b)); e.g. c₁=π(c₀) and c₀=π⁻¹(c₁).

In step 409, the prover 190 may create a real proof of knowledge using as input a witness w_(b) of x_(b). The real proof of knowledge comprises the real commitment, the real challenge c_(b), and a real response.

In step 411, the prover 190 may send the real and simulated proofs of knowledge to the verifier 180 causing the verifier 180 to accept the proofs.

FIG. 5 is a diagram 500 indicative of an example OR-proof method or protocol involving the proving unit 100 referred to as P and the verifier 180 referred to as V. The OR-proof of FIG. 5 may be a two-party protocol that involves multiple relations. The two-party protocol of FIG. 2 involves a single relation. And for simplification of the description, the protocol of FIG. 5 is described by reference to Σ′ protocol of FIG. 2.

Since two relations

₀ and

₁ are used for the protocol of FIG. 5, two Σ′ protocols S₀ and S₁ may be provided. S₀ is a Σ′ protocol for

₀⊂

′₀⊂X₀⊂W₀ with challenge set C and S₁ is a Σ′ protocol for

₁⊂

′₁ ⊂X₁ ⊂W₁ with challenge set C.

It is assumed that languages L(

₀) and L(

₁) satisfy the following L(

₀)˜X₀ and L(

₁)˜X₁ i.e. that no PPT algorithm can distinguish whether x₀∈L(

₀) or x₀∈X₀\L(

₀) and whether x₁∈L(

₁) or x₁∈X₁ \L(

₁). This assumption is justified by the fact to prove a statement of the form x₀∈L(

₀)∨x₁∈L(

₁) without revealing which statement is true.

The simulator 191 may comprise two component simulators Sim₀ and Sim₁ for each of the Σ′ protocols S₀ and S₁ respectively. Simulator Sim₀ may be configured to receive as inputs elements of X₀ rather than elements of L(

₀). Simulator Sim₁ may be configured to receive as inputs elements of X₁ rather than elements of L(

₁). This is because Sim₀ (Sim₁) is a PPT algorithm and it cannot distinguish between the two sets and may thus still produce a valid transcript even if x₀∈X₀ \L(

₀) (x₁∈X₁ \L(

₁)).

The challenge set C for each of the Σ′ protocols S₀ and S₁ may for example be a subset of

[X]/X^(n)+1 for a predefined value of n. However, the challenge set for the OR-proof protocol of FIG. 5 is Π⊂Perm(C), where Π has the following properties: Elements in Π have a short representation, the uniform distribution over Π can be computed efficiently, for any π∈Π, π⁻¹ can be computed efficiently, and for any f,g∈C,Pr[π(f)=g]=1/|C|.

The OR-proof protocol of FIG. 5 provides a three-move form as follows. The simulator 191 using its components Sim₀ and Sim₁ generates for a given challenge c_(1-b), where b=1 or 0, a pair of simulated commitment and simulated response (t_(1-b),s_(1-b)). The prover 190 generates a real commitment for the knowledge of the witness w_(b) to x_(b). The generated commitments t0 and t1 by the simulator 191 and the prover 190 are sent by the prover to the verifier V. This forms the first move of the protocol.

In response to sending the commitments, the prover may receive from the verifier a permutation π of the challenge set Π. This forms the second move of the protocol.

Using the received permutation, the prover may compute a real challenge c_(b) so that c_(b)=π^(2b-1) (c_(1-b)) and generate a real response s←P(x_(b),w_(b),t_(b),c_(b)). The real and simulated challenges and responses are then sent by the prover to the verifier. This forms the third move of the protocol.

The verifier may then verify the simulated and real transcripts that has received from the prover. The verification as indicated in FIG. 5 may consist of checking if the received challenges c0 and c1 are interrelated in accordance with the submitted permutation. In addition, a verification function Verify0 and Verify1 checks the acceptance of the simulated and real transcripts. The functions Verify0 and Verify1 may be known functions of the zero-proof knowledge protocols.

Thus, the proof protocol of FIG. 5 may fulfill the three-move form and completeness conditions. The two remaining conditions may also fulfilled as described with the following theorem.

Theorem 1. The proof given in FIG. 5 is a zero knowledge proof of x₀∈L(

₀)∨x₁∈L(

₁).

Proof of the Theorem 1

SHVZK: Given x₀∈X₀, x₁∈X₁, and a challenge π∈Π, the simulator 191 samples c₀←C and outputs Sim₀ (x₀, c₀), Sim₁(x₁, π(c₀)) is uniform in C since π is a permutation of C and the distribution is indistinguishable from an honest transcript.

SOUNDNESS: Let P be a deterministic prover that succeeds with probability p≥1/|C|+ε, an extractor ε who runs in expected time O(poly(B)/ε) (where B is the bit size of the input of the protocol), that can extract b,t_(b),c_(b),s_(b),c′_(b),s′_(b) such that:

b∈{0,1}

Verify_(b)(t _(b) ,c _(b) ,s _(b))=1

Verify_(b)(t _(b) ,c _(b) ′,s _(b)′)=1

c _(b) ≠c _(b)′

Using this extractor two accepting transcripts may be obtained for S_(b) with different challenges, and w′ such that (x,w′)∈

′ may be obtained.

Extractor ε first runs prover P on random π∈Π until it outputs a tuple (t₀,t₁,π,c₀,s₀,c₁,s₁) that successfully verifies. This takes expected time O(1/p). Extractor ε then runs prover P on random π′∈Π until it outputs a tuple (t₀,t₁,π′,c′₀,s′₀,c′₁, s′₁) that successfully verifies, such that c₀≠c′₀ and c₁≠c′₁. If P succeeds, let b such that c_(b)≠c′_(b), since both transcripts of P are accepting transcripts, the extractor is a desired extractor. The prove that P produces a valid transcript in expected time O(poly(B)/ε), i.e. that for a fixed π∈Π, his probability of success, over the choice π′

Π is greater than ε may be determined as follows.

Pr [  succeeds⋀(c₀ ≠ c₀^(′)⋁c₁ ≠ c₁^(′))] = Pr [  succeeds] − Pr [  succeeds⋀(c₀ = c₀^(′)⋀c₁ = c₁^(′))] = 1/ + ɛ − Pr [  succeeds⋀(c₀ = c₀^(′)⋀π(c₀) = π^(′)(c₀)] ≥ 1/ + ɛ − Pr [π(c₀) = π^(′)(c₀)] = ɛ

FIG. 6 depicts a diagram 600 of an example method or protocol to proof that a homomorphic commitment opens to a value x e.g. open to either 0 or 1. In this example, the relation R_(b) may be defined such that a witness is a homomorphic commitment of corresponding instance. The computations performed by each of the proving unit 100 and the verifier 180 are listed in association with each of the proving unit and verifier as indicated in diagram 600.

Diagram 600 indicates a Σ′-protocol for proving knowledge of a specific opening to a commitment, which will then be used in the next section (“Proof of opening to 0 or 1”) to prove that a commitment opens to either 0 or 1. For a fixed message x, Σ′-protocol for the language

_(x)={c,r|c=Com(x;r)∧∥r∥≤B_(r)} with extractor in

_(x)′={c, (r,f)|f·c=Com(f·x;r)∧∥r∥≤B_(r)′∧∥f∥≤2B_(c)}. The challenge pace or set is C={f∈

[X]/X^(n)+1|∥f∥_(∞)=1, ∥f∥¹=60.

Theorem 3.

Let B_(r)≥2√{square root over (n(2d+1)σ)}, B_(c)=√{square root over (60)}. If c=Com(x,r) with ∥r∥≤B_(r) and x∈{0,1}, ξ≥11B_(c)B_(r), and B_(r)′≥2ξ√{square root over (n(2d+1))}, then the algorithm in diagram 600 is a zero knowledge proof that c is a valid commitment of either 0 or 1. In diagram 610 of FIG. 6 the simulator used in the proof for soundness is explicitly described. This simulator will be used in the section (“Proof of opening to 0 or 1”). Diagram 600 provides a proof that a commitment opens to a value x and diagram 610 indicating the simulator for the proof that the commitment opens to the value x.

Proof of opening to 0 or 1.

The proof that a commitment opens to 0 or 1 is indicated in diagram 620 of FIG. 6. Building blocks may be instantiated as follows:

For b∈{0,1},

_(b) ={c,r|c=Com(b;r)∧∥r∥≤B _(r)}

For b∈{0,1},

_(b) ′={c,(r,f)|f·c=Com(f·b;r)∧∥r∥≤B _(or) ∧∥f∥≤2B _(c)}

C={f∈

[X]/X ^(n)+1|∥f∥ _(∞)=1,∥f∥ ₁=60}

Π=Perm(n)×{0,1}⁶⁰

The challenge set may be the set of elements of with exactly 60 coefficients in {−1, 1} and zeroes everywhere else (for n=256, |C|>2²⁵⁶) π=(s,b)∈Π acts on a polynomial f∈C by permuting its coefficient according to s and changing the sign of the i^(th) nonzero coefficient if b_(i)=1. Π verifies the four conditions mentioned above with reference to diagram 620 of FIG. 6. The protocol of FIG. 6 provides a proof that a commitment opens to 0 or 1, i.e. an or-proof that a commitment c is such that c∈L(

₀)∪L(

₁).

Theorem 4

Let B_(r)≥2√{square root over (n(2d+1)σ)}, B_(c)=√{square root over (60)}. If c=Com(x,r) with ∥r∥≤B_(r) and x∈{0,1}, ξ≥11B_(c)B_(r), and B_(or)≥2ξ√{square root over (n(2d+1))}, then the algorithm in FIG. 6 is a zero knowledge proof that c is a valid commitment of either 0 or 1.

As indicated in diagram 620 of FIG. 6, the simulated commitment t_(1-x) is generated using the homomorphic commitment of corresponding r_(1-x) and a challenge f_(1-x) of the challenge set C and the homomorphic commitment c. And the commitment t_(x) is generated using the homomorphic commitment of r_(x).

The two commitments t0 and t1 may be processed by a function H e.g. in order to generate a hash value h that is sent to the verifier. Upon receiving the hash value the verifier may send back to the prover a permutation π.

The challenge f_(x) is determined by the prover using the permutation it. The transcripts are then sent to the verifier in order to perform verification in accordance with the check list indicated on the right side of the diagram 600.

The list of checks performed by the verifier upon receiving the transcripts from the prover are indicated in association with the verifier of FIG. 6.

The commitment over polynomials may be described as follows.

The commitment is a lattice-based homomorphic commitment, the security of which relies on the hardness of the M-LWE (Module Learning With Error) and M-SIS (Module Short Integer Solution) problems.

For n a power of two (e.g. 256 or 512), q=poly(n), and d∈

; let R=

[X]/X^(n)+1, let R_(q)=R/qR, let σ∈

, let Dσ be the discrete Gaussian distribution of parameter σ, let B_(c) and B_(r) be two positive real bounds. A commitment for elements of R_(q) may be defined as follows.

Keygen(1^(λ)):

${{Let}\mspace{14mu} A^{\prime}}\overset{\$}{\leftarrow}_{q}^{d \times {({d + 1})}}$ Let  A = [A^(′)|I_(d)] ∈ _(q)^(d × (2d + 1)) ${{Let}\mspace{14mu} B}\overset{\$}{\leftarrow}_{q}^{k \times {({{2d} + 1})}}$ ${{Output}\mspace{14mu} C}:={\begin{bmatrix} A \\ B \end{bmatrix} \in _{q}^{{({d + 1})} \times {({{2d} + 1})}}}$

Commit(x∈R_(q)):

Let  r ← _(σ)^(2d + 1) ${{Output}\mspace{14mu} {{Com}\left( {x;r} \right)}}:={{{C \cdot r} + \begin{bmatrix} 0 \\ x \end{bmatrix}} \in _{q}^{d + 1}}$

Open(c∈R_(q) ^(d+1),x∈R_(q),r∈R_(q) ^(2d+h),f∈R_(q)):

x, r, f  is  a  valid  opening  of  c  if ${fc} = {{C \cdot r} + \begin{bmatrix} 0 \\ {fx} \end{bmatrix}}$ f ≤ B_(c) r ≤ B_(r)

Theorem 2. The commitment scheme described above is computationally binding and hiding under the M-LWE and M-SIS assumptions.

Proof of Theorem 2. M-LWE may be used as a computational assumption. The scheme is binding if the function which maps r∈R_(q) ^(2d+1) to A·r∈R_(q) ^(2d) is collision resistant for vectors of norm ∥r∥≤2B_(c). This may be true if M-SIS_(q,n,2d+1,2Bc) is hard. The scheme is hiding if the function that maps r∈R_(q) ^(2d+1) to C·r∈R_(q) ^(d) is indistinguishable from uniform for r←D_(σ) ^(2d+1). This may be true if M-LWE_(q,n,d,σ) is hard.

FIG. 7 is a diagram 700 of an example application of the present protocol on Schnorr Proofs. As an example, the OR-proof construction described herein e g with reference to FIG. 3, may be applied to Schnorr proof of discrete logarithms. The computation of the elements of the simulated and real transcripts are indicated on FIG. 7 (left side)

Let

be a cyclic multiplicative group of prime order q with generator. Let R and R′ be the relations between elements of

and their discrete logarithm with respect to, i.e., R=R′={(x,w)∈

×

q:x=g^(w)}.

If q is a k-bit integer, then let w_(k) . . . w₁ be the binary representation of w∈

q, i.e. w=Σ_(i=1) ^(k)w_(i)·2^(i-1). Challenges are taken uniformly from the set C of k-bit integers with exactly k′≤k one-bits in their binary presentation i.e., C={c∈{0,1}^(k):Σ_(i=1) ^(k)c_(i)=k′}. For example, when k=256, k′ may be equal to 30 so that

${C} = {\begin{pmatrix} 256 \\ 30 \end{pmatrix} > {2^{128}.}}$

Let Π be the set of permutations on the bit positions {1, . . . , k}. by having π(c)=c_(π(k)) . . . c_(π(1)) for π∈Π, where Π may be a set of permutations over challenge space C. By applying the present protocol to two instances of Schnorr proof, i.e.

₀=

₁=

, an OR-proof that x₀=g^(w) ∨x₁=g^(w) may be obtained as indicated in FIG. 7.

In FIG. 7, c, s, t refer to the challenge, response and commitment respectively. r_(b) is a predefined value of

q that is used to generate the response by the prover.

Various embodiments are specified in the following numbered clauses.

1. A method for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w₀ that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness w_(b) of at least one of instances x₀ and x₁, where b is 0 or 1, of the respective relations R₀ and R₁ the method comprises:

providing a proving unit comprising a prover and a simulator, wherein the proving unit has an indication of the witness w_(b) of x_(b);

generating by the simulator, using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge c_(1-b) from a challenge set C_(1-b), and a simulated response;

generating by the prover a real commitment as the first step in a real proof of knowledge of a witness w_(b) to x_(b);

generating by the prover a hash value by applying a hash function to an input comprising the true commitment and the real commitment, and interpreting said hash value as the description a bijective function π mapping elements from challenge set C₀ to challenge set C₁;

computing by the prover a real challenge c_(b) so that c_(b)=π^(2b-1)(c_(1-b));

creating by the prover a real proof of knowledge using as input a witness w_(b) of x_(b) comprising the real commitment, the real challenge c_(b), and a real response;

sending by the prover the real and simulated proofs of knowledge to the verifier causing the verifier to accept the proofs.

2. The method of clause 1, wherein the proving of the knowledge of a witness of at least one of instances x_(b) and x_(1-b) is the proving of the following statement x₀∈L(R₀) OR x₁ ∈L(R₁).

3. The method of clause 1 or 2, wherein the simulator is configured to generate for a given x_(k)∈L(R_(k)), where k=0 or 1, a transcript that is indistinguishable from a transcript that is generated by the prover from the given x_(k) and corresponding witness w_(k).

4. The method of clause 1 or 2 or 3, wherein the relation R_(b) is defined such that a witness w_(b) is a homomorphic commitment of corresponding instance x_(b), wherein polynomials f of the challenge set are defined as {f∈

[X]/X^(n)+1|∥f∥_(∞)=1,∥f∥₁=60}, wherein the predefined bijective function π is a permutation that is selected from permutation set Π=Perm(n)×{0,1}⁶⁰, where n is an integer value.

5. The method of clause 1 or 2 or 3, wherein set X_(b) is a cyclic group

of prime order q with generator g and the set W_(b) is group

q, wherein witness w_(b) is related to corresponding instance x_(b) as follows x_(b)=g^(w) ^(b) .

Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 

What is claimed is:
 1. A method for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w₀ that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness w_(b) of at least one of instances x_(b) and x_(1-b), where b is 0 or 1, of the respective relations R_(b) and R₁-b the method comprises: providing a proving unit comprising a prover and a simulator, wherein the proving unit has an indication of the witness w_(b) of x_(b); generating by the simulator, using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge c_(1-b) from a challenge set C_(1-b), and a simulated response; generating by the prover a real commitment as a first step in a real proof of knowledge of a witness w_(b) to x_(b); sending by the prover the real and simulated commitments to a verifier; in response to the sending of the commitments, receiving by the prover from the verifier a bijective function m mapping elements from challenge set C₀ to challenge set C₁; computing by the prover a real challenge c_(b) so that c_(b)=π^(2b-1)(c_(1-b)); creating by the prover a real proof of knowledge using as input a witness w_(b) of x_(b) comprising the real commitment, the real challenge c_(b), and a real response; and sending by the prover the real and simulated proofs of knowledge to the verifier causing the verifier to accept the proofs.
 2. The method of claim 1, wherein the challenge sets C₀ and C₁ are identical, and where the bijective function π is a permutation over C₀=C₁.
 3. The method of claim 1, wherein the challenge sets C₀ and C₁ are sets of integers, and where the bijective function π is a bijective function of the bit positions in a binary representation of elements of C₀.
 4. The method of claim 1, wherein the challenge sets C₀ and C₁ are sets of polynomials, and where the bijective function π is a permutation of the coefficients of the polynomials.
 5. The method of claim 4, where the challenge sets C₀ and C₁ are a subset C of

[X]/X^(n)+1 for a predefined integer value n.
 6. A method for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w0 that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness w_(b) of at least one of instances x₀ and x₁, where b is 0 or 1, of the respective relations R₀ and R₁ the method comprises: providing a proving unit comprising a prover and a simulator, wherein the proving unit has an indication of the witness w_(b) of x_(b); generating by the simulator, using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge c_(1-b) from a challenge set C and a simulated response; generating by the prover a real commitment as the first step in a real proof of knowledge of a witness w_(b) to x_(b); generating by the prover a hash value by applying a hash function to an input comprising the true commitment and the real commitment, and interpreting said hash value as the description a bijective function iv mapping elements from challenge set C₀ to challenge set C₁; computing by the prover a real challenge c_(b) so that c_(b)=π^(2b-1)(c_(1-b)); creating by the prover a real proof of knowledge using as input a witness w_(b) of x_(b) comprising the real commitment, the real challenge c_(b), and a real response; and sending by the prover the real and simulated proofs of knowledge to the verifier causing the verifier to accept the proofs.
 7. The method of claim 1, wherein the proving of the knowledge of a witness of at least one of instances x_(b) and x_(1-b) is the proving of the following statement x₀∈L(R₀) OR x₁∈L(R₁).
 8. The method of claim 1, wherein the simulator is configured to generate for a given x_(k)∈L(R_(k)), where k=0 or 1, a transcript that is indistinguishable from a transcript that is generated by the prover from the given x_(k) and corresponding witness w_(k).
 9. The method of claim 1, wherein the relation R_(b) is defined such that a witness w_(b) is a homomorphic commitment of corresponding instance x_(b), wherein polynomials f of the challenge set are defined as {f∈

[X]/X^(n)+1|∥f∥_(∞)=1,∥f∥₁=60}, wherein the predefined bijective function π is a permutation that is selected from permutation set Π=Perm(n)×{0,1}⁶⁰, where n is an integer value.
 10. The method of claim 1, wherein set X_(b) is a cyclic group

of prime order q with generator g and the set W_(b) is group

q, wherein witness w_(b) is related to corresponding instance x_(b) as follows x_(b)=g^(w) ^(b) .
 11. A proving unit for performing a disjunctive proof for two relations R₀ and R₁, the relation R₀ being between an instance set X₀ and a witness set W₀ and defining a language L(R₀) containing those elements x₀∈X₀ for which there exists a witness w0 that is related to x₀ in accordance with R₀, the relation R₁ being between an instance set X₁ and a witness set W₁ and defining a language L(R₁) containing those elements x₁∈X₁ for which there exists a witness w₁ that is related to x₁ in accordance with R₁, wherein for proving knowledge of a witness of at least one of instances x_(b) and x_(1-b), b is 0 or 1, of the respective relations R_(b) and R_(1-b), the proving unit comprising a prover and a simulator, the proving unit having an indication of the witness of x_(b); wherein the simulator is configured for generating using the instance x_(1-b), a transcript of a proof of knowledge of an eventual witness of x_(1-b) comprising a simulated commitment, a simulated challenge from a challenge set C_(1-b), and a simulated response; wherein the prover is configured for generating a real commitment in a proof of knowledge of a witness w_(b) for the instance x_(b); sending the real and simulated commitments to a verifier; in response to the sending of the commitments, receiving from the verifier a bijective function π mapping elements from challenge set C₀ to challenge set C₁; generating a real challenge c_(b) from challenge set C_(b) by such that c_(b)=π^(2b-1)(c_(1-b)); creating a real proof of knowledge of the witness of x_(b) using as inputs the instance x_(b) and the corresponding witness w_(b), comprising of the real commitment, the real challenge c_(b) and a real response; and ending the real and simulated proofs of knowledge causing the verifier to accept the proofs.
 12. A proof system comprising the proving unit of claim 11 and a verifier, wherein the verifier is configured for selecting the bijective function from a set of functions and sending the bijective function to the prover in response to receiving the simulated and real commitments from the prover. 